/**
 * Project SQLiteWrapper
 */


#ifndef _SQLITETABLE_H
#define _SQLITETABLE_H

#include <string>
#include <vector>
#include "SQLiteRecord.h"
#include "SQLiteDataType.h"
#include "SQLiteConstraint.h"

using std::string;
using std::vector;

class SQLiteTable {
public: 
    
    /**
     * @param column_name
     * @param data_type
     * @param constraint
     */
    void AddColumn(const string& column_name, const SQLiteDataType& data_type, const SQLiteConstraint& constraint);
    
    /**
     * @param column_name
     * @param data_type
     */
    void AddColumn(const string& column_name, const SQLiteDataType& data_type);
    
    const string& GetColumns();
    
    const string table_name();
    
    /**
     * @param table_name
     */
    void set_table_name(const string& table_name);
    
    int GetRecordSize();
    
    void ResetRecords();
    
    SQLiteRecord* next();
private: 
    string table_name_;
    vector<SQLiteRecord> records_;
};

#endif //_SQLITETABLE_H